/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * testing.java
 *
 * Created on 27/10/2011, 12:38:49 PM
 */

package vistaDibujable;

import controladorjuegolp2.pCivilizationG;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;
import java.util.logging.*;
import javax.imageio.*;


public class testing extends javax.swing.JApplet {

    Image bufferI, imageMap;
    BufferedImage db;
    JMenu jMenu1;
    JMenuBar jMenuBar1;
    JMenuItem jMenuItem1, jMenuItem2;
    boolean estaJugando = false;
    pCivilizationG controladorJ;
    Graphics g;
    Mapa mapa;
    int accionU,accionC;
    int curX,X;
    int curY,Y;
    int Raton = 0;
    int crear;
    String texto;

    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {

                public void run() {
                    initApplet();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void initApplet() {
        JPanel p = (JPanel) this.getContentPane();
        p.setFocusable(true);

        prepareImages();

        //eventos
        p.addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent ke) {
                keyHandler(ke);
            }
        });
        addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                formFocusLost(evt);repaint();
            }
        });

        //componentes
        jMenuBar1 = new JMenuBar();
        jMenu1 = new JMenu();
        jMenuItem1 = new JMenuItem();
        jMenuItem2 = new JMenuItem();

        jMenu1.setText("File");

        jMenuItem1.setText("Abrir juego");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Nueva partida");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt); repaint();
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);
    }

    private void formFocusLost(java.awt.event.FocusEvent evt) {
       this.repaint();
    }

    private void prepareImages() {
        try {
            bufferI = ImageIO.read(new File(".\\imagenes\\fondoj.png"));
            imageMap = ImageIO.read(new File(".\\imagenes\\c0mapa.png"));
        } catch (Exception ex) {
            Logger.getLogger(ventanaJuego.class.getName()).log(Level.SEVERE, null, ex);
        }
        db = new BufferedImage(800, 800, BufferedImage.TYPE_INT_RGB);
    }




    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        JFileChooser fc = new JFileChooser();
        int returnVal = fc.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fc.getSelectedFile();
            //  log.append("Opening: " + file.getName() + "." + newline);
        } else {
            //log.append("Open command cancelled by user." + newline);
        }
        this.repaint();
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        String nombreJ = JOptionPane.showInputDialog("ingresa nombre del jugador");
        if (!nombreJ.isEmpty()) {
            estaJugando = true;

            jMenuBar1.setVisible(false);
            this.repaint();
            //cargarJuegoInicial + estructuraRectangulos drawrect1 drawrect2 drawrect3
            //setVisibleMapaSecciones
            //cargarJuegoAnterior
            //batalla---- estaJugando=true // estaPeleando=False;
            //if (estaPeleando=False)
            // map.setVisible(false);
            //pintarImagenBatalla();
            //No olvidar Añadir eventos y relacionar con archivos Binarios para que funcionen
            //los comandos abrir y cerrar :)
            try {

                controladorJ = new pCivilizationG();
                controladorJ.cargarXMLInicial("amigos");

            } catch (Exception ex) {
                Logger.getLogger(ventanaJuego.class.getName()).log(Level.SEVERE, null, ex);

            }
        }

    }

    private void keyHandler(KeyEvent ke) {
        if (ke.getKeyCode() == KeyEvent.VK_ESCAPE) {
            int m = JOptionPane.showConfirmDialog(this, "Â¿Desea salir del Juego?");

            if (m == 0) {
                System.exit(0);
            }

        }
        if (Raton == 1 && (mapa.getCelda(X, Y).ocupado() == 0)) { //construir (con el clic izquierdo)
            char car = ke.getKeyChar();
            if (car == 'a') {
                accionC = 1; //bungalow
            }
            if (car == 'b') {
                accionC = 2; //casa pequenha
            }
            if (car == 'c') {
                accionC = 3; //casa moderna
            }
            if (car == 'd') {
                accionC = 4; //mansion
            }
            if (car == 'e') {
                accionC = 5; //mansion presidencial
            }
            if (car == 'f') {
                accionC = 6; //tribunal federal
            }
            if (car == 'g') {
                accionC = 7; //ayuntamiento
            }
            if (car == 'h') {
                accionC = 8; //cuartel militar
            }
            if (car == 'i') {
                accionC = 9; //fuerza aerea
            }
            if (car == 'j') {
                accionC = 10; //base naval
            }
            if (car == 'k') {
                accionC = 11; //granero
            }
            if (car == 'l') {
                accionC = 12; //pozo petrolero
            }
            if (car == 'm') {
                accionC = 13; //madera
            }
            if (car == 'n') {
                accionC = 14; //mineria
            }
            if (accionC >= 1 && accionC <= 14) {
                //controladorJ.construir(X, Y, accionC);
                texto = "construyendo";
            }
        }

        if (Raton == 3 && (mapa.getCelda(X, Y).sacaConstruccion() != null)) { //crear (con el clic derecho)
            char car = ke.getKeyChar();
            if (car == 'a') {
                accionU = 1; //soldado
            }
            if (car == 'b') {
                accionU = 2; //tanque simple
            }
            if (car == 'c') {
                accionU = 3; //avion
            }
            if (car == 'd') {
                accionU = 4; //barco
            }
            if (car == 'e') {
                accionU = 5; //fresas
            }
            if (car == 'f') {
                accionU = 6; //madera
            }
            if (car == 'g') {
                accionU = 7; //metales
            }
            if (car == 'h') {
                accionU = 8; //petroleo
            }
            if (accionU >= 1 && accionU <= 8 && (mapa.getCelda(X, Y).sacaConstruccion().getestado() == 3)) {
                // controladorJ.crear(X, Y, accionU);
                texto = "creando?";
            }
        }
        Raton = 0;
        accionC = 0;
        accionU = 0;
        char car = ' ';
        repaint();
    }


    private ArrayList<String> inicializaTexto(Graphics g) {

        ArrayList<String> bufftext = new ArrayList<String>();
        bufftext.add("                   !!!!!!!!!!!!!!!!!Peru Civilization 2011!!!!!!!!!!!!!!                 ");
        bufftext.add("Construye tu ciudad con casas, edificios e industrias productoras de recursos para tu ciudad ");
        bufftext.add("No olvides que tenemos que defendernos del enemigo, y construye tus edificios militares ");
        bufftext.add("Las instrucciones del juego son fÃ¡ciles, administra tu ciudad y Defiendela del enemigo ");
        return bufftext;
    }

    public void pintaJuegoInicial(Graphics g2d, Image I) {
        int x = 60, y = 200, z = 25;
        if (I != null) {
            g2d.drawImage(I, 0, 0, this);
        } else {
            g2d.drawString("No encuentra imagen", 100, 100);
        }

        ArrayList<String> textGame = inicializaTexto(g2d);

        for (int j = 0; j < textGame.size(); j++) {
            if (j == 0) {
                g2d.setFont(new Font("arial", Font.BOLD, 20));
            }
            if (j == 1) {
                g2d.setFont(new Font("arial", Font.BOLD, 17));
            }

            g2d.drawString(textGame.get(j), x, y);
            y += z;
        }
        this.jMenuBar1.repaint();
    }

    public void pintaJuegoMapa(Graphics g2d, Image I) {
        if (I != null) {
            g2d.drawImage(I, 0, 0, this);
        } else {
            g2d.drawString("No encuentra imagen", 100, 100);
        }
    }

    public void paint(Graphics g) {

        super.paint(g);
        db = new BufferedImage(800, 800, BufferedImage.TYPE_INT_RGB);
        Graphics g2d = (Graphics2D) db.getGraphics();

        if (!estaJugando) {
            pintaJuegoInicial(g2d, bufferI);
        } else {
            pintaJuegoMapa(g2d, imageMap);
        }

        g.drawImage(db, 0, 0, this);
    }
    /** Initializes the applet testing */

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    /*
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents


    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables
*/
}
